# -*- coding: utf-8 -*-
from django.contrib.auth.decorators import login_required
from django.core import serializers
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from legendofkrouzt.decorators import not_character
from legendofkrouzt.item.models import PersonagemItem, PersonagemArma,\
    PersonagemArmadura
from legendofkrouzt.personagem.forms import FormPersonagem
from legendofkrouzt.personagem.models import Personagem, Raca, Classe
from legendofkrouzt.views import TemplatePersonagem

@login_required
def index(request):
    id = request.user
    personagens = Personagem.objects.filter(usuario=id)
    if(request.method == 'POST'):
        idPersonagem = request.POST['id_Personagem']
        personagem = Personagem.objects.filter(id=idPersonagem)
        request.session['id_Personagem'] = idPersonagem
        return HttpResponseRedirect('/personagem/perfil/')
        
    return render_to_response('personagem/index.html',locals(), context_instance=RequestContext(request))

@login_required
def criar(request):
    id = request.user
    numPersonagem =  Personagem.objects.filter(usuario=id).count()
    if( numPersonagem < 3 ):
        if(request.method == 'POST'):
            form = FormPersonagem(request.POST)
            
            if(form.is_valid()):
                novo_personagem = form.save(commit=False)
                novo_personagem.nome = request.POST['nome'].capitalize()
                novo_personagem.avatar  = request.POST['url_avatar']
                novo_personagem.img_personagem = request.POST['url_avatar'].replace('avatar','personagem')
                novo_personagem.hp  = int(request.POST['id_hp_raca'])+int(request.POST['id_hp_classe'])
                novo_personagem.hp_atual  = int(request.POST['id_hp_raca'])+int(request.POST['id_hp_classe'])
                novo_personagem.mp  = int(request.POST['id_mp_raca'])+int(request.POST['id_mp_classe'])
                novo_personagem.mp_atual  = int(request.POST['id_mp_raca'])+int(request.POST['id_mp_classe'])
                novo_personagem.constituicao  = int(request.POST['id_constituicao_raca'])+int(request.POST['id_constituicao_classe'])
                novo_personagem.agilidade  = int(request.POST['id_agilidade_raca'])+int(request.POST['id_agilidade_classe'])
                novo_personagem.inteligencia  = int(request.POST['id_inteligencia_raca'])+int(request.POST['id_inteligencia_classe'])
                novo_personagem.forca  = int(request.POST['id_forca_raca'])+int(request.POST['id_forca_classe'])
                
                novo_personagem.usuario = request.user
                novo_personagem.save()
                return HttpResponseRedirect('/personagem/')
        else:
            form = FormPersonagem()
    else:
        maxPersonagem = "Numero maximo de personagem"
        
    return render_to_response('personagem/criar.html',locals(), context_instance=RequestContext(request))

def busca(request):
    """
        busca de classe e raca
    """
    
    if request.method == 'POST':
        
        tipo = request.POST['id_tipo']
        id = request.POST[tipo]
        
        if(tipo == 'raca'):
            busca = Raca.buscarRaca(id)
        else:
            busca = Classe.buscarClasse(id)
        
        json = serializers.serialize("json", busca)
        return HttpResponse(json, "aplication/json")
    
    return HttpResponseRedirect('/');

def buscaPersonagem(request):
    
    """
        busca de personagem para a mensagem
    """
   
    if(request.method == 'GET'):
        parametro = request.GET.get('q','')
        busca = Personagem.buscarPersonagem(parametro)
        json = "["
        for res in busca:
            json += '{"name":"'+res.nome+'","id":"'+str(res.id)+'"},'
        retorno = json[:-1]
        retorno += "]"
        return HttpResponse(retorno, "aplication/json")
    
    return HttpResponseRedirect('/')
        
@not_character
def perfil(request):
    personagem = Personagem.objects.get(pk=request.session['id_Personagem'])
    ouro = personagem.ouro
    raca = personagem.raca
    classe = personagem.classe
    agilidade = personagem.agilidade
    constituicao = personagem.constituicao
    inteligencia = personagem.inteligencia
    forca = personagem.forca
    img_personagem = personagem.img_personagem
    equipamentos_arma = PersonagemArma.buscaArmasPersonagem(request.session['id_Personagem'])
    equipamentos_armadura = PersonagemArmadura.buscaArmadurasPersonagem(request.session['id_Personagem'])
    return TemplatePersonagem(request,'personagem/perfil.html',locals())

@not_character
def inventarioItens(request):
    itens = PersonagemItem.buscaItensPersonagem(request.session['id_Personagem'])
    if(request.method == 'POST'):
        itemPersonagem = PersonagemItem.objects.get(pk=request.POST['idItem'])
        personagem = Personagem.objects.get(pk=request.session['id_Personagem'])
        if(request.POST['button'] == 'Equipar'):
            msg = 'Equipou'
        elif(request.POST['button'] == 'Vender'):
            personagem.ouro += itemPersonagem.preco_venda
            itemPersonagem.delete()
        personagem.save()
    return TemplatePersonagem(request,'personagem/inventarioItens.html',locals())

@not_character
def inventarioArmaduras(request):
    armaduras = PersonagemArmadura.buscaArmadurasPersonagem(request.session['id_Personagem'])
    if(request.method == 'POST'):
        armadurasPersonagem = PersonagemArmadura.objects.get(pk=request.POST['idArmadura'])
        personagem = Personagem.objects.get(pk=request.session['id_Personagem'])
        personagem.ouro += armadurasPersonagem.preco_venda
        armadurasPersonagem.delete()
        personagem.save()
    return TemplatePersonagem(request,'personagem/inventarioArmaduras.html',locals())

@not_character
def inventarioArmas(request):
    armas = PersonagemArma.buscaArmasPersonagem(request.session['id_Personagem'])
    if(request.method == 'POST'):
        armaPersonagem = PersonagemArma.objects.get(pk=request.POST['idArma'])
        personagem = Personagem.objects.get(pk=request.session['id_Personagem'])
        personagem.ouro += armaPersonagem.preco_venda
        armaPersonagem.delete()
        personagem.save()
    return TemplatePersonagem(request,'personagem/inventarioArmas.html',locals())